package com.trt.beibei.vo;

import com.trt.beibei.model.Category;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @author tanrentao
 * @date 2021-08-11
 * @desc
 */
@Getter
@Setter
public class CategoryAllVO {

    private List<CategoryPureVO> roots;
    private List<CategoryPureVO> subs;

    public CategoryAllVO(Map<Integer, List<Category>> map) {
        // 1.取出循环
        // List<Category> roots = map.get(1);
        // roots.forEach(category -> {
        //     CategoryPureVO vo = new CategoryPureVO(category);
        //     this.roots.add(vo);
        //  });
        // List<Category> subs = map.get(2);

        // 2.函数式编程 java8流式
        // this.roots = map.get(1).stream()
        //         .map(r-> { // r代表Category
        //             return new CategoryPureVO(r);
        //         })
        //         .collect(Collectors.toList());

        this.roots = map.get(1).stream()
                .map(CategoryPureVO::new)  // 方法的引用（构造函数的引用）   方法的引用4种形式 1.类上的静态方法引用 2.构造函数的引用 3.实例方法的引用
                .collect(Collectors.toList());
        this.subs = map.get(2).stream()
                .map(CategoryPureVO::new)
                .collect(Collectors.toList());
    }
}
